class ApplicationController < ActionController::Base
  helper :all
  filter_parameter_logging "password"
  
  include ExceptionNotifiable
  include AuthenticatedSystem
  
  before_filter :login_from_cookie, :actualizar_last_seen_at
  helper_method :key
  helper :prototype_window_class
  
  # See ActionController::RequestForgeryProtection for details
  # Uncomment the :secret if you're not using the cookie session store
  # protect_from_forgery # :secret => '7ee4b8cfbad2bdd469bb20eba1e2fea1'  
  
  # Método períodico que actualiza el campo 'ultima vez visto' por la aplicación
  def actualizar_last_seen_at 
    current_usuario.update_attributes(:last_seen_at => Time.now.to_s(:db)) if logged_in? and current_usuario.visible
  end
  
  # Método que permitirá acceder a tu regalo si tienes crendenciales
  # suficientes, es decir, si eres el remitente, el invitado o tienes
  # el hash code del regalo.
  def comprueba_acceso
    @regalo = Regalo.find(params[:id] || params[:regalo_id])

    if !params[:hash]
      if @regalo.remitente != current_usuario && @regalo.invitado != current_usuario
        if logged_in?
          flash[:error] = "Acceso denegado."
          redirect_to usuario_home_path(current_usuario.login) and return
        else
          flash[:alert] = "¡ Identificate para acceder a tu regalo !"
          store_location
          redirect_to acceso_main_path and return
        end
      end
    elsif (params[:hash] && logged_in?)
      flash[:error] = "Acceso denegado. Los usuarios registrados no necesitan hash."
      redirect_to usuario_home_path(current_usuario.login) and return
    elsif (params[:hash] && !logged_in?)
      regalo_id = params[:hash].split("-")[0]
      
      if regalo_id.to_i != @regalo.id
        flash[:error] = "Información de la invitación incorrecta"
        redirect_back_or_default("/")
        return  
      end
    end   

    if logged_in?
      @rol = current_usuario.remitente?(@regalo) ? "remitente" : "invitado"
    elsif  Regalo.es_valido?("remitente", params[:hash]) 
      @rol = "remitente"
    elsif Regalo.es_valido?("invitado", params[:hash])
      @rol = "invitado"
    else
      flash[:error] = "Acceso denegado"
      redirect_to main_path
    end
  end
end